package com.ajx.platform.buildingmronitor.model;

import com.anjuxing.platform.common.base.User;
import com.anjuxing.platform.common.base.ValidateData;
import com.anjuxing.platform.common.crud.CrudModel;
import com.anjuxing.platform.common.util.CodeUtils;
import com.anjuxing.platform.common.util.DateUtils;
import com.anjuxing.platform.common.util.ValidateUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 高空抛物摄像机信息表
 */
@Data
@NoArgsConstructor
public class HightBuildCamera extends CrudModel<HightBuildCamera> {

    private static final long serialVersionUID = 1L;

    private String id; // 主键ID
    private String macAddress; // MAC地址
    private String ipAddress; // IP地址
    private String subnetMask; // 子网掩码
    private String deviceName; // 设备名称
    private String deviceCode; // 设备编号
    private String deviceSn; // 设备序列号
    private String deviceType; // 设备类型
    private String groupId; // 相机组id
    private Integer status; // 数据状态（0.禁用 1.可用）
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime; // 创建时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime; // 修改时间
    private String longitude; // 经度
    private String latitude; // 纬度


    /********************************************数据校验处理操作***********************************************/

    /**
     * 数据校验，插入数据之前执行，需要手动调用
     * @return
     */
    @Override
    public ValidateData validate() {
        ValidateData valid = new ValidateData();
        StringBuffer msg = new StringBuffer();
        boolean status = true;
        if (ValidateUtils.length(this.id) > 50) {
            status = false;
            msg.append("主键ID最大长度为50字符!\n");
        }
        if (ValidateUtils.length(this.macAddress) > 100) {
            status = false;
            msg.append("MAC地址最大长度为100字符!\n");
        }
        if (ValidateUtils.length(this.ipAddress) > 100) {
            status = false;
            msg.append("IP地址最大长度为100字符!\n");
        }
        if (ValidateUtils.length(this.subnetMask) > 100) {
            status = false;
            msg.append("子网掩码最大长度为100字符!\n");
        }
        if (ValidateUtils.length(this.deviceName) > 100) {
            status = false;
            msg.append("设备名称最大长度为100字符!\n");
        }
        if (ValidateUtils.length(this.deviceCode) > 100) {
            status = false;
            msg.append("设备编号最大长度为100字符!\n");
        }
        if (ValidateUtils.length(this.deviceSn) > 100) {
            status = false;
            msg.append("设备序列号最大长度为100字符!\n");
        }
        if (ValidateUtils.length(this.deviceType) > 100) {
            status = false;
            msg.append("设备类型最大长度为100字符!\n");
        }
        if (ValidateUtils.length(this.groupId) > 100) {
            status = false;
            msg.append("相机组id最大长度为100字符!\n");
        }
        if (ValidateUtils.length(this.longitude) > 100) {
            status = false;
            msg.append("经度最大长度为100字符!\n");
        }
        if (ValidateUtils.length(this.latitude) > 100) {
            status = false;
            msg.append("纬度最大长度为100字符!\n");
        }
        valid.setStatus(status);
        valid.setMessage(msg.toString());
        return valid;
    }

    /**
     * 插入数据之前执行方法，需要手动调用
     */
    @Override
    public void preInsert(User user) {
        if (ValidateUtils.isEmpty(this.id)) {
            this.id = CodeUtils.getUUID();
        }
            this.status = STATUS_VALID;
        if(this.createTime==null){
            this.createTime = DateUtils.getCurrentTime();
        }
        if(this.updateTime==null){
            this.updateTime = DateUtils.getCurrentTime();
        }
    }

    @Override
    public void preUpdate(User user) {

    }

    @Override
    public void preCancel(User user) {

    }

    @Override
    public String toString() {
        StringBuffer sb = new StringBuffer();
        sb.append(this.getClass().getName());
        sb.append("; id=" + (id == null ? "null" : id.toString()));
        sb.append("; macAddress=" + (macAddress == null ? "null" : macAddress.toString()));
        sb.append("; ipAddress=" + (ipAddress == null ? "null" : ipAddress.toString()));
        sb.append("; subnetMask=" + (subnetMask == null ? "null" : subnetMask.toString()));
        sb.append("; deviceName=" + (deviceName == null ? "null" : deviceName.toString()));
        sb.append("; deviceCode=" + (deviceCode == null ? "null" : deviceCode.toString()));
        sb.append("; deviceSn=" + (deviceSn == null ? "null" : deviceSn.toString()));
        sb.append("; deviceType=" + (deviceType == null ? "null" : deviceType.toString()));
        sb.append("; groupId=" + (groupId == null ? "null" : groupId.toString()));
        sb.append("; status=" + (status == null ? "null" : status.toString()));
        sb.append("; createTime=" + (createTime == null ? "null" : createTime.toString()));
        sb.append("; updateTime=" + (updateTime == null ? "null" : updateTime.toString()));
        sb.append("; longitude=" + (longitude == null ? "null" : longitude.toString()));
        sb.append("; latitude=" + (latitude == null ? "null" : latitude.toString()));
        return sb.toString();
    }

}